1. The Field of the Invention
The present invention relates to reliable network messaging. More particularly, the present invention relates to end-to-end reliable messaging that is independent of transport protocol and which may use complete acknowledgements.
2. Background and Related Art
Computing and networking technology has transformed the way we work and play. Networks have become so prolific that a simple network-enabled computing system may communicate with any one of millions of other computing systems spread throughout the globe over a conglomeration of networks often referred to as the “Internet”. Such computing systems may include desktop, laptop, or tablet personal computers; Personal Digital Assistants (PDAs); telephones; or any other computer or device capable of communicating over a digital network.
In order to communicate over a network, one computing system (referred to herein as a “sending computing system”) constructs or otherwise accesses an electronic message and transmits the electronic message over a network to another computing system (referred to herein as a “receiving computing system”). The electronic message may be read by a human user as when the electronic message is an e-mail or instant message, or may be read, instead, by an application running on the receiving computing system. The electronic message may be constructed by an application running on the sending computing system with the possible assistance of a human user.
Although such electronic messaging advantageously allows for computing systems to exchange information, networks sometimes fail to deliver an electronic message. Depending on the importance of the electronic message, this could be quite harmful, and even catastrophic in some cases. Accordingly, reliable electronic messaging technologies have been developed.
One reliable messaging technology is implemented at the transport layer in the form of acknowledgement messages. For example, Transmission Control Protocol (among other transport protocols) implements acknowledgement-based reliable messaging. Specifically, when a receiving computing system receives an electronic message from a sending computing system, the receiving computing system transmits an acknowledgement message to the sending computing system. Upon receipt of the acknowledgement message, the sending computing system may reliably take appropriate action given a knowledge that the receiving computing system did in fact receive the electronic message. Otherwise, if the sending computing system does not receive the acknowledgement message, the sending computing system may take appropriate action such as retransmitting the electronic message.
In order to reduce the number of acknowledgement messages that need to be transmitted, cumulative acknowledgement has been developed. In cumulative acknowledgement, the sending computing system assigns a sequence number to each electronic message in a session. The sequence number for a given electronic message is typically incremented by one as compared to the previous electronic message in the session. The cumulative acknowledgement returned to the sending computing system includes the last sequence number of a contiguous series of sequence numbers representing successfully received messages. For example, suppose the receiving computing system received electronic messages: having sequence numbers 1 through 6, but not 7. The receiving computing system may return a cumulative acknowledgment identifying the sequence number 6.
One issue with cumulative acknowledgement is that, in the example, the sending computing system would not know anything about whether or not electronic messages having greater than 7 have been received. Accordingly, there is doubt as to the sending computing systems most appropriate action. For example, the sending computing system does not typically know whether it is a brief or more persistent network problem that caused the electronic message having sequence number 7 to be dropped. Accordingly, it is not clear whether the most appropriate action would be to retransmit electronic messages having sequence numbers greater than 7, or would be to retransmit just the electronic messaging having sequence number 7. An error in this judgment may cause unnecessary network bandwidth and processor usage and/or unnecessary delay.
Furthermore, the tracking and acknowledgment mechanism is specific to the transport protocol. In addition, many transport protocols do not allow for communication of tracking and acknowledgment information if the electronic message was to transition from one transport protocol to another. Accordingly, tracking and acknowledgment messages are not reliably communicated end-to-end between the sending computing system and the receiving computing systems.
Accordingly, what would be advantageous are reliable messaging in which acknowledgment message and tracking information is communicated even if multiple transport protocols are involved in messaging, and in which acknowledgment of the receipt of multiple electronic messages may be more fully communicated.